package com.aleyn.router.provider

import android.content.ContentProvider
import android.content.ContentValues
import android.database.Cursor
import android.net.Uri
import com.aleyn.router.LRouter
import com.aleyn.router.util.dLog

/**
 * @author: Aleyn
 * @date: 2023/6/9 11:00
 *
 * 利用 ContentProvider 实现路由的自动初始化。
 * ContentProvider 在应用启动时会自动创建，因此可以利用这个时机来执行 LRouter 的初始化逻辑，
 * 无需在 Application.onCreate() 中手动调用。
 */
class RouterContentProvider : ContentProvider() {

    /**
     * 在 ContentProvider 创建时调用。
     * 如果启用了自动初始化 (LRouter.enabledAutoInit)，则会在此处调用 LRouter.init()。
     */
    override fun onCreate(): Boolean {
        if (LRouter.enabledAutoInit) {
            "Router Auto Init".dLog()
            LRouter.init(context)
        }
        return true
    }

    // 以下是 ContentProvider 的标准方法，在此场景下未使用，返回默认值。

    override fun query(
        uri: Uri,
        projection: Array<out String>?,
        selection: String?,
        selectionArgs: Array<out String>?,
        sortOrder: String?
    ): Cursor? = null

    override fun getType(uri: Uri): String? = null

    override fun insert(uri: Uri, values: ContentValues?): Uri? = null

    override fun delete(uri: Uri, selection: String?, selectionArgs: Array<out String>?) = 0

    override fun update(
        uri: Uri,
        values: ContentValues?,
        selection: String?,
        selectionArgs: Array<out String>?
    ) = 0

}